package com.briup.day16;

import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.StringJoiner;
import java.util.TreeSet;

public class SetTest {
    public static void main(String[] args) {
        /*
            Set集合存储的是不可重复的元素，同时set集合中由于实现不可重复的目标，
            选择的数据结构可能导致set集合中的数据元素的无序的；
            Set集合的底层实现都是借助于Map集合
            在Set集合中，最常用的集合实现类如下：
                HashSet: 底层实现的数据结构借助于HashMap，能够存储不可重复数据，
                添加进HashSet中的数据，其添加顺序和读取顺序可能不一致
                TreeSet: 底层是实现的数据结构借助于TreeMap，在存储数据时可以根据你指定的
                排序逻辑，对集合中的数据进行排序，那么读取集合数据时，其顺序就是执行你指定的排序
                算法/逻辑后的结果
           Set集合中没有特殊定义的方法，都是从Collection接口中继承/实现的方法
         */
        HashSet<Object> set = new HashSet<>();
        set.add(LocalDateTime.now());
        set.add(1);
        set.add(600);
        set.add("hello");
        set.add(new String("hello"));
        System.out.println(set);

        // HashSet添加Integer数据
        HashSet<Integer> integers = new HashSet<>();
        integers.add(1000);
        integers.add(60);
        integers.add(-100);
        integers.add(666);
        System.out.println(integers);

        // HashSet添加Integer数据，结果发现读取后的数据是有序的，从小到大
        TreeSet<Integer> integers2 = new TreeSet<>();
        integers2.add(10000);
        integers2.add(1000);
        integers2.add(60);
        integers2.add(-100);
        integers2.add(666);
        System.out.println(integers2);

        // 添加所有的数据
        TreeSet<Object> objects = new TreeSet<>();
        objects.add(1);
        objects.add(-100);
        /*objects.add("abc");
        objects.add("1");*/
        objects.add(LocalDateTime.now());
        System.out.println(objects);
    }
}
